package com.zbkj.service.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.github.pagehelper.PageInfo;
import com.zbkj.common.model.city.CityRegion;
import com.zbkj.common.model.city.CityRegionEntity;
import com.zbkj.common.page.CommonPage;
import com.zbkj.common.request.CityRegionEditRequest;
import com.zbkj.common.request.CityRegionQueryRequestVo;
import com.zbkj.common.request.CityRegionRequest;
import com.zbkj.common.request.CitySearchRequest;
import com.zbkj.common.response.CityResponse;
import com.zbkj.common.response.FundsFlowResponse;
import com.zbkj.common.vo.CityVo;
import com.zbkj.common.vo.MyRecord;

import java.util.List;

/**
 * SystemCityService 接口
 * +----------------------------------------------------------------------
 */
public interface CityRegionService extends IService<CityRegionEntity> {

    /**
     * 获取城市树
     */
    List<CityVo> getCityListTree();

    /**
     * 获取城市区域缓存树
     *
     * @return List
     */
    List<CityVo> getRegionListTree();

    /**
     * 添加城市区域
     *
     * @param request 城市区域参数
     * @return Boolean
     */
    Boolean add(CityRegionRequest request);

    /**
     * 编辑城市区域
     *
     * @param request 城市区域参数
     * @return Boolean
     */
    Boolean edit(CityRegionEntity request);

    /**
     * 删除城市区域
     *
     * @param regionId 区域id
     * @return Boolean
     */
    Boolean delete(String disId);

    /**
     * 获取城市区域列表
     *
     * @param request 请求参数
     * @return 城市区域列表
     */
    List<CityResponse> getCityRegionList(CitySearchRequest request);

    /**
     * 通过区域ID获取城市数据
     *
     * @param disId 区域id
     * @return 城市数据
     */
    CityRegionEntity getByDisId(String disId);

    /**
     * 通过区域名称获取城市数据
     *
     * @param regionName 区域名称
     * @param parentId   父区域id
     * @return 城市数据
     */
    CityRegionEntity getByRegionName(String regionName, String parentId, Integer regionType);

    /**
     * 获取省级城市数据
     */
    List<CityRegionEntity> findProvinceList();

    /**
     * 获取市级城市数据
     */
    List<CityRegionEntity> findCityList(String provinceId);

    /**
     * 获取区级城市数据
     */
    List<CityRegionEntity> findDistrictList(String cityId);

    /**
     * 获取街道级城市数据
     */
    List<CityRegionEntity> findStreetList(String districtId);



    List<CityRegionEntity> getByParentDisId(String parentDisId);


    PageInfo<CityRegionEntity> getPageList(CityRegionQueryRequestVo requestVo);
    PageInfo<CityRegionEntity> getPageListBrand(CityRegionQueryRequestVo requestVo);
}
